#ifndef PROTOCOL_H
#define PROTOCOL_H

typedef unsigned int uint;

enum ENUM_MSG_TYPE{   // 消息类型
    ENUM_MSG_TYPE_MIN = 0,

    ENUM_MSG_TYPE_REGIST_REQUEST, // 注册请求
    ENUM_MSG_TYPE_REGIST_RESPOND, // 注册应答
    ENUM_MSG_TYPE_LOGIN_REQUEST , // 登录请求
    ENUM_MSG_TYPE_LOGIN_RESPOND , // 登录应答

    ENUM_MSG_TYPE_FIND_USER_REQUEST, // 查找用户请求
    ENUM_MSG_TYPE_FIND_USER_RESPOND, // 查找用户应答
    ENUM_MSG_TYPE_ONLINE_USER_REQUEST, // 在线用户请求
    ENUM_MSG_TYPE_ONLINE_USER_RESPOND, // 在线用户应答
    ENUM_MSG_TYPE_ADD_FRIEND_REQUEST,  // 添加好友请求
    ENUM_MSG_TYPE_ADD_FRIEND_RESPOND,  // 添加好友应答
    ENUM_MSG_TYPE_ADD_FRIEND_AGREE_REQUEST,  // 同意添加好友请求
    ENUM_MSG_TYPE_ADD_FRIEND_AGREE_RESPOND,  // 同意添加好友应答
    ENUM_MSG_TYPE_FLUSH_FRIEND_REQUEST,  // 刷新好友请求
    ENUM_MSG_TYPE_FLUSH_FRIEND_RESPOND,  // 刷新好友应答
    ENUM_MSG_TYPE_DELETE_FRIEND_REQUEST, // 删除好友请求
    ENUM_MSG_TYPE_DELETE_FRIEND_RESPOND, // 删除好友应答
    ENUM_MSG_TYPE_CHAT_REQUEST, // 聊天请求
    ENUM_MSG_TYPE_CHAT_RESPOND, // 聊天应答

    ENUM_MSG_TYPE_MKDIR_REQUEST, // 创建文件夹请求
    ENUM_MSG_TYPE_MKDIR_RESPOND, // 创建文件夹应答

    ENUM_MSG_TYPE_MAX = 0x00ffffff
};

struct PDU{           // 协议数据单元
    uint uiPDULen  ;  // 协议总长度
    uint uiMsgLen  ;  // 实际消息长度
    uint uiMsgType ;  // 消息类型
    char caData[64];  // 参数
    char caMsg [  ];  // 实际消息
};

PDU* mkPDU(uint uiMsgType, uint uiMsgLen);

#endif // PROTOCOL_H
